\chapter{Conclusioni e sviluppi futuri}\label{conclusioni}
E' stato sviluppato un software \textit{P2P} per lo scambio di messaggi tra due o più utenti facendo uso del linguaggio C e delle API del socket di \textit{Berkeley}. Le API dei socket di Berkeley sono state utilizzate per la gestire le connessioni tra peer, permettendo l'instaurazione di connessioni di tipo persistente; inoltre è stato inserito un livello software ex-novo, il quale si comporta come un'interfaccia d'accesso per la comunicazione tra lo strato TCP e quello HTTP su cui si basa l'intero processo di scambio di pacchetti.
I vari test che sono stati eseguiti hanno dimostrato che il sistema riesce a mantenere un buon grado di stabilità e velocità, senza mai trovarsi in uno stato di inconsistenza. Nonostante ciò effettuando un'analisi più dettagliata si possono notare alcune inefficienze, sopratutto per quello che riguarda la gestione dell'invio concorrente dei pacchetti. A tale proposito è stato deciso di adottare un meccanismo di sequenzializzazione dei pacchetti basato sull'utilizzo di particolari strutture come le code e su un algoritmo di polling basato sullo sleep dei \textit{client thread}\index{client thread}.
In questo modo ogni client non rischierà di perdere alcun segnale di notifica, proveniente dal lato server, per l'invio di un pacchetto. Una possibile risoluzione al fine di evitare lo sleeping del thread potrebbe essere l'introduzione di un \texttt{pthread\_cond\_timedwait()}, ovvero una funzione che gestisce la sospensione del thread solo nel caso di ricezione di un segnale o allo scadere del timer. Per quello che riguarda lo sviluppo di funzionalità aggiuntive si potrebbe pensare alla possibilità di effettuare il trasferimento di file tra gli utenti di una chat, funzionalità in parte già sviluppata. Un'ulteriore miglioria all'applicazione potrebbe essere fatta aggiungendo il supporto ad una sorta di \textit{WebCache}\index{WebCache}, ovvero la possibilità di reperire la lista dei peer (necessari al \textit{bootstrap}\index{bootstrap}) da un server centralizzato.